当我们导入TensorFlow包的时候,系统会帮我们产生一个默认人的图,它被存在_default_graph_stack中,但是我们没有权限直接进入这个图,我们需要使用 tf.get_default_graph()命令来获取图。
graph=tf.get_default_graph()
tensorflow中的图上的节点称之为operations或者ops。我们可以使用 graph.get_operations()命令来获取图中的operations.
ops=graph.get_operations()
print(ops)
-->[]
现在,因为图中没有操作,所以我们返回的是[ ]。我们可以向图中添加操作,比如我们先定义一个常量 input_value。
现在,这个常量作为一个节点添加到了图中,作为一个operations。现在,我们能发现operations中的存在值了。
input_value=tf.constant(1.0)
ops=graph.get_operations()
print(ops)
print(ops[0].node_def)
结果:
<tensorflow.python.framework.ops.Graph object at 0x00000269805EB550>
[<tf.Operation 'Const' type=Const>]
name: "Const"
op: "Const"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 1.0
}
}
}
tensorflow还有很多有意义的事情,但是你必须给每个操作都赋予明确的含义,即使只是一个常量。
如果我们查看常量input_value,我们将只能看到他是一个32位的浮点类型的tensor,维度是0。
print(input_value)
结果:
Tensor("Const:0", shape=(), dtype=float32)
可能你注意到了,我们发现这个操作并没有告诉我们input_value的值是多少。这是为什么呢?因为图graph只是定义了操作operations,但是操作operations只能在session里面执行,但是graph和session是独立创建的。所以,我们上述操作才没有显示input_value的值是多少。如果,我们想知道input_value中具体的值是多少,那么我们需要创建一个session。